#include<stdio.h>
#include<unistd.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <string.h>
//int main()
//{
 //  pid_t pid;
 //   
 //   pid = fork();
 //   if(pid < 0){
 //      printf("%s fork error\n",__FUNCTION__);
 //       return 1;
 //        
 //   }else if( pid == 0  ){ //child
 //    printf("child is run, pid is : %d\n",getpid());
 //    sleep(5);
 //    exit(1);
 //   } else{
 //      int status = 0;
 //       pid_t ret = 0;
 //        do
 //           {}
 //   }
}//
 //ret = waitpid(-1, &status, WNOHANG);//非阻塞式等待
 //if( ret == 0  ){
 //   printf("child is running\n");
 //    
 //}
 //sleep(1);
 // }while(ret == 0);
 //
i//f( WIFEXITED(status) && ret == pid  ){
 //  printf("wait child 5s success, child return code is :%d.\n",WEXITSTATUS(status));
 //   
}//else{
 //  printf("wait child failed, return.\n");
 //   return 1;
 //    
}//
 //}
 //return 0;
 //}
//#include <errno.h>
//int main()
//{
//   pid_t pid;
//    pid = fork();
//    if(pid < 0){
//       printf("%s fork error\n",__FUNCTION__);
//        return 1;
//         
//    } else if( pid == 0  ){ //child
//     printf("child is run, pid is : %d\n",getpid());
//     sleep(5);
//     exit(257);
//    } else{
//       int status = 0;
//        pid_t ret = waitpid(-1, &status, 0);//阻塞式等待，等待5S
//         printf("this is test for wait\n");
//         if( WIFEXITED(status) && ret == pid  ){
//            printf("wait child 5s success, child return code is :%d.\n",WEXITSTATUS(status));
//             
//         }else{
//            printf("wait child failed, return.\n");
//             return 1;
//              
//         }
//    }
//}
// }
// return 0;
// }
//int main()
//{
//   pid_t pid;
//    if ( (pid=fork()) == -1  )
//       perror("fork"),exit(1);
//    if ( pid == 0  ){
//       sleep(20);
//        exit(10);
//         
//    } else {
//       int st;
//        int ret = wait(&st);
//         
//         if ( ret > 0 && ( st & 0X7F  ) == 0  ){ // 正常退出
//          printf("child exit code:%d\n", (st>>8)&0XFF);
//          } else if( ret > 0  ) { // 异常退出
//           printf("sig code : %d\n", st&0X7F );
//           }
//          
//    }
//
//}
////int main()
//int{
//  printf("Linux!");
//  _exit(1);
//}

//void func()
//
//tmp
//{
//  return ;
//}
//int main()
//{
//  printf("begin:.........\n");
//  func();
//  printf("after:..........\n");
//  return 0;
//}
//
//int main()
//{
//  pid_t pid;
//  printf("Before: pid is %d\n",getpid());
//
//  pid = fork();
//  printf("After:pid is %d, fork return %d\n", getpid(), pid);
//  sleep(1);
//  return 0;
//}
//

//int val = 10;
//int main()
//{
//    pid_t ret = fork();
//    if(ret == 0)
//    {
//      //child
//      val = 20;
//      printf("child[%d]: %d: %p:\n",getpid(),val,&val);
//    }
//    else if(ret > 0)
//    {
//      printf("parent[%d]: %d : %p\n", getpid(), val, &val);
//      sleep(3);
//    }
//    else{}
//    sleep(1);
//  return 0;
//}
//


